﻿/**
 *******************************************************************************
 *                       Continental Confidential
 *                  Copyright (c) Continental AG. 2017
 *
 *      This software is furnished under license and may be used or
 *      copied only in accordance with the terms of such license.
 *******************************************************************************
 * @file    FormTimeCursor.cpp
 * @brief
 *******************************************************************************
 */
// 中文注释：该文件实现了ChannelCursorItem类的成员函数，包括构造函数、析构函数和绘制函数
#include "ChannelCursorItem.h"
#include <QPainter>
#include <QWidget>
#include <QGraphicsSceneMouseEvent>
#include <QDebug>
/**
 * @brief 构造函数，初始化 ChannelCursorItem 对象。
 * 
 * @param parent 父 QGraphicsItem 对象，默认为 nullptr。
 */
ChannelCursorItem::ChannelCursorItem(QGraphicsItem *parent)
    :QGraphicsRectItem(parent),
      m_size(20,10),      // 初始化光标尺寸为20x10
      m_cursoPos(0,0)     // 初始化光标位置为(0,0)
{
    // 设置图元的 Z 值为 1000，确保其显示在较上层
    setZValue(1000);
    // 设置图元的矩形区域为10x10
    setRect(0,0,10, 10);
}

/**
 * @brief 析构函数，销毁 ChannelCursorItem 对象。
 */
ChannelCursorItem::~ChannelCursorItem()
{
    // 析构函数为空，没有需要释放的资源
}

/**
 * @brief 绘制 ChannelCursorItem 图元。
 * 
 * @param painter 用于绘制的 QPainter 对象。
 * @param option 包含样式选项的 QStyleOptionGraphicsItem 对象。
 * @param widget 可选的绘制目标 QWidget。
 */
void ChannelCursorItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
	Q_UNUSED(option);
    // 禁用抗锯齿，提高绘制性能
    painter->setRenderHint(QPainter::Antialiasing, false);
    // 开始原生绘制，使用底层图形API提高性能
    painter->beginNativePainting();
    // 设置画刷颜色为红色，用于填充多边形
    painter->setBrush(Qt::red);
    // 设置画笔颜色为红色，用于绘制轮廓
    painter->setPen(Qt::red);
    // 创建一个多边形对象，用于绘制光标形状
    QPolygonF polygon;
    // 添加多边形的第一个顶点(-10,0)
    polygon.append(QPointF(-10,0));
    // 添加多边形的第二个顶点(10,0)
    polygon.append(QPointF(10,0));
    // 添加多边形的第三个顶点(0,20)
    polygon.append(QPointF(0,20));
    // 绘制多边形，形成一个三角形光标
    painter->drawPolygon(polygon);
    // 绘制从 (0, 0) 到 (0, widget高度) 的垂直线，作为时间参考线
    painter->drawLine(QPointF(0,0), QPointF(0, widget->size().height()));
	//qDebug() << "Cursor QWidget:" << widget->objectName();
    // 结束原生绘制
    painter->endNativePainting();
}
